package com.lap.auth.shared.tools;

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import lombok.experimental.UtilityClass;
import org.apache.commons.collections4.CollectionUtils;

@UtilityClass
public class CacheKeyUtil {

  /**
   * 缓存集合key，请勿修改或者移动，修改要注意把引用地方都调整。
   *
   * @param list 集合
   * @return 缓存
   */
  public static String generateKey(List<Integer> list) {
    if (CollectionUtils.isEmpty(list)) {
      return "";
    }

    return list.stream()
        .filter(Objects::nonNull)
        .distinct()
        .sorted()
        .map(String::valueOf)
        .collect(Collectors.joining(","));
  }

  /**
   * 缓存集合key，请勿修改或移动。
   *
   * @param list 集合
   * @param otherKey 其他参数
   * @return 缓存
   */
  public static String generateKey(List<String> list, String... otherKey) {
    return (Optional.ofNullable(list).orElse(Collections.emptyList()).stream()
                .distinct()
                .sorted()
                .collect(Collectors.joining(","))
            + Stream.of(Optional.ofNullable(otherKey).orElse(new String[0]))
                .distinct()
                .sorted()
                .collect(Collectors.joining(",")))
        .trim();
  }
}
